import axios from 'axios';
import VueAxios from 'vue-axios';
// import router from '@/router'; //因为使用了 vite-plugin-pages 插件，这里使用静态导入就会报错，所以在下面使用了动态导入
import { useStore } from '@/store'

// axios配置
axios.defaults.timeout = 120000; //设置接口响应时间
// axios.defaults.baseURL = 'http://localhost:1699/'; //这是调用数据接口,公共接口url+调用接口名
// axios.defaults.baseURL = 'http://39.105.20.79:1699/'; //这是调用数据接口,公共接口url+调用接口名
axios.defaults.baseURL = 'http://60.208.51.115:50024/'; //这是调用数据接口,公共接口url+调用接口名
// axios.defaults.baseURL = '/api' //这是调用数据接口,公共接口url+调用接口名

//弹框标记
let msgFlag = false;

//--------------------------------Axios配置拦截----------------------------------------

axios.interceptors.request.use(
    (config) => {
        let store = useStore()
        console.log('Token', store.token)
        //请求拦截处理
        let token = store.token;
        if (token) {
            console.log(config.headers)
            // config.headers.common['Authorization'] = token; //axios低版本时使用的
            config.headers.set('Authorization', `Bearer ${token}`)
        }
        return config;
    },
    (error) => {
        //Message.error("request："+error)
        return Promise.reject(error);
    }
);

axios.interceptors.response.use(
    async (response) => {
        //动态导入router
        const dynamicRouter = await import('./router')
        const router = dynamicRouter.default
        switch (response.data.code) {
            case 401:
                router.push('/login');
                break;
            default:
                break;
        }
        //请求响应处理
        return response.data;
    },
    async (error) => {
        if (error.response) {
            //动态导入router
            const dynamicRouter = await import('./router')
            const router = dynamicRouter.default
            switch (error.response.status) {
                case 1001:
                    {
                        error.message = '未登陆，请先登陆！';
                        router.push('/login');
                    }
                    break;
                case 401:
                    {
                        error.message = 'Token验证错误！';
                        router.push('/login');
                    }
                    break;
                case 402:
                    {
                        error.message = '402错误：' + error;
                    }
                    break;
                case 403:
                    {
                        error.message = '对不起，您没有权限操作！';
                    }
                    break;
                case 404:
                    {
                        error.message = '页面丢失！';
                        router.push('/404');
                    }
                    break;
                case 500:
                    {
                        error.message = '服务器异常：' + error;
                        router.push('/500');
                    }
                    break;
                default:
                    {
                        error.message = '未知异常：' + error;
                    }
                    break;
            }
        } else {
            //Message.error("服务器未启用："+error)
        }
        //解决Token失效多次弹框问题
        if (!msgFlag) {
            //Message.error(error.message)
            msgFlag = true;
            setTimeout(() => {
                msgFlag = false;
            }, 3000);
        }
        return Promise.reject(error);
    }
);

//导出多个（属性/方法）
export { axios, VueAxios };